package server

import (
	"WebServer/middleware"
	"WebServer/sql"
	"WebServer/utools"
	"fmt"
	"github.com/gofiber/fiber/v2"
)

type Test struct {
	SearchKey string `json:"key"`
}

func APIServer(server fiber.Router) {
	server.Post("/article", func(ctx *fiber.Ctx) error {
		userid := ctx.GetRespHeader("relToken")
		err := sql.AddArticleSql(ctx.Body(), userid)
		if err != nil {
			res, _ := utools.Message.Error(err.Error(), ctx)
			return res
		}
		utools.Message.Success("成功", ctx)
		return nil
	})
	server.Post("/articleList", func(ctx *fiber.Ctx) error {
		userid := ctx.GetRespHeader("relToken")
		res, err := sql.GetArticleList(ctx.Body(), userid)
		if err != nil {
			ruleErr, _ := utools.Message.Error(err.Error(), ctx)
			return ruleErr
		} else {
			utools.Message.Success(res, ctx)
		}
		return nil
	})
	server.Delete("/article", func(ctx *fiber.Ctx) error {
		res := ctx.Query("id", "")
		if len(res) <= 0 {
			res, _ := utools.Message.Error("need query id", ctx)
			return res
		}
		err := sql.DropHouse(res)
		if err != nil {
			errMsg, _ := utools.Message.Error(fmt.Sprint("DBERR: ", err.Error()), ctx)
			return errMsg
		}
		utools.Message.Success(res, ctx)
		return nil
	})
	server.Get("/article", func(ctx *fiber.Ctx) error {
		queryId := ctx.Query("id", "")
		if len(queryId) <= 0 {
			res, _ := utools.Message.Error("need query id", ctx)
			return res
		}
		res, err := sql.HouseDetailSql(queryId)
		if err != nil {
			res, _ := utools.Message.Error(err.Error(), ctx)
			return res
		} else {
			if len(res.Id) > 0 {
				utools.Message.Success(res, ctx)

			} else {
				utools.Message.Success(nil, ctx)
			}
			return nil
		}
	})
	server.Post("/inventory", func(ctx *fiber.Ctx) error {
		err := sql.InventorySql(ctx.Body())
		if err != nil {
			res, _ := utools.Message.Error(err.Error(), ctx)
			return res
		} else {
			utools.Message.Success("请求成功", ctx)
			return nil
		}
	})
	server.Get("/inventory", func(ctx *fiber.Ctx) error {
		classId := ctx.Query("id", "")
		num, err := sql.ClassificationInventorySql(classId)
		if err != nil {
			res, _ := utools.Message.Error(err.Error(), ctx)
			return res
		} else {
			utools.Message.Success(num, ctx)
			return nil
		}
	})
	server.Post("/login", func(ctx *fiber.Ctx) error {
		id, err := sql.UserLogin(ctx.Body())
		if err != nil {
			res, _ := utools.Message.Error(err.Error(), ctx)
			return res
		} else {
			token, err := middleware.MakeToken(id)
			if err != nil {
				res, _ := utools.Message.Error("token Error: "+err.Error(), ctx)
				return res
			} else {
				db, err := utools.GetDB()
				if err != nil {
					res, _ := utools.Message.Error("DB connect Error: "+err.Error(), ctx)
					return res
				} else {
					_, err := db.Exec(sql.UpDateToken, token, id)
					if err != nil {
						res, _ := utools.Message.Error("DB inset Error: "+err.Error(), ctx)
						return res
					} else {
						utools.Message.Success(token, ctx)
						return nil
					}
				}
			}
		}
	})
	server.Get("/login_verify", func(ctx *fiber.Ctx) error {
		utools.Message.Success(true, ctx)
		return nil
	})
}
